<?php
namespace app\api\model;
use think\Model;
use think\Log;
use think\Db;
use think\Cookie;
class Cuser extends Model{
   // private $id;
    protected $auto = ['login_ip'];
    protected $autoWriteTimestamp ='int';
    //protected $update=['login_count'];
    protected function setLoginIpAttr()
       {
                return request()->ip();
        }
   /** protected function setLoginCount(){
        return $this->where('id',$this->id)->setInc('login_count');
    }**/
  /** public function __construct($id){
       $this->id=$id;
   }**/
    public function Clogin($data){
        try {
            $where=array('telphone'=>$data['telphone']);
            $password=md5($data['password']);
            
            //这里需要拆开肯定是账户 密码登录之前账户存在 如果账号异常提示 如果没有
            //首先根据=手机号进行查询是否存在账户
            $res=$this->where($where)->find();
            if($res){
                if($res['status']=='0'&&$res['password']==$password)
                {
                    //这里用户登录成功说明账号存在 这里进行用户的登录更新
                    //模型需要ip自动完成 登录的次数需要自动完成
                    //进行判断用户是否记住密码如果控制器传递的check为真我们这里
                    //首先进行token验证 就再写一个功能
                    session('user_id',$res['id']);//登录成功记住状态
                    $data_new['user_id']=$res['id'];
                    $data_new['password']=$data['password'];
                    if(!empty($data['layout'])){
//                         cookie('user_id',$data_new);
//                         cookie('pwd',$data['password']);
//                         cookie('tel',$data['telphone']);
                        Cookie::set('user_id',$data_new);
                        Cookie::set('pwd',$data['password']);
                        Cookie::set('tel',$data['telphone']);
                    }
                    
                    $id=$res['id'];
                    $this->where('id',$id)->setInc('login_count');//更新登录次数
                    $this->where('id',$id)->setField('login_ip',request()->ip());//跟上登录Ip
                   // $this->update(array('login_count'=>'login_count'+1,'id'=>$id));
                    return 1;
                    //这个返回的是1 控制器是正确登录
                }else
                {
                    return 0;
                    //这个返回的是 用户或者密码错误
                }
            }else{
                   return 2;
                   //这个是账户不存在进行提示即可 请注册
            }
        }catch (\think\Exception $e){
            Log::write('login exception'.$e->getMessage());
        }
    }
    /**
     * 普通会员注册
     * @param array $data 注册登录提交数据
     * @return string $res 注册成功失败返回结果
     */
    public function Cregister($data)
    {
    try 
    {
        //这里进行数据的验证
        
        if(!empty($data))
        {
            //这里加一个账号存在删除
          $res=$this->selectAccount($data['telphone']);
          if($res){
              $this->where('telphone',$data['telphone'])->delete();
          }
         $re=$this->allowField(true)->save($data);  
         if($re){
             return 1;//注册成功
         }else{
             return 0;//注册失败
         }
        }
    }catch (\think\Exception $e)
    {
        
    }
    }
    /**
     * @param string $telphone 账号
     * @return int $res 返回状态 
     * @description:检查用户账号是否已存在
     */
    public function checkUserExits($telphone){
        try {
            $res=$this->where('telphone',$telphone)->field('id')->find();
            if(empty($res)){
                return 0;//用户不存在
            }else{
                return 1;//用户存在
            }
        }catch (\think\Exception $e){
            Log::write('unkown exception'.$e->getMessage());
        }
    }
    //如有前端需求进行数据库处理
    public function Repswd($telphone,$newpassword){
        try {
            $where=array('telphone'=>$telphone);
            $id=$this->where($where)->setField('password',$newpassword);
            if($id){
                return 1;
            }else{
                return 0;
            }
        }catch (\think\Exception $e){
            Log::write('unkown exception'.$e->getMessage());
        }
    }
        public function Repswds($telphone,$newpassword){
            try {
                $where=array('telphone'=>$telphone);
                $id=$this->where($where)->update(array('password'=>$newpassword));
                if($id){
                    return 1;
                }else{
                    return 0;
                }
            }catch (\think\Exception $e){
                Log::write('unkown exception'.$e->getMessage());
            }
    }
    //所有的添加更新都使用这种方式
    /**
     * 
     * @param int $telphone 手机号
     * @param int $newpassword 重置密码
     * @return number 1 重置成功 0重置失败
     */
    public function Repswd3($telphone,$newpassword){
        try {
            $where=array('telphone'=>$telphone);
            $id=$this->save(array('password'=>md5($newpassword)),array('telphone'=>$telphone));
            if($id){
                return 1;
            }else{
                return 0;
            }
        }catch (\think\Exception $e){
            Log::write('unkown exception'.$e->getMessage());
        }
    }
    /**
     * 检测是否设置token记住登录
     */
    public function checkToken()
    {
       $user_id=cookie('user_id');
       if($user_id){
           return $user_id;
       }else{
           return 0;
       }
    }
    public function checkUserStatus($user_id){
        try {
          $where=array('id'=>$user_id,'status'=>0);
          $res=$this->where($where)->field('status')->find();
          if($res['status']=='0'){
              return 1;//正常
          }else{
              return 0;//不正常
          }
        }catch (\think\Exception $e){
            Log::write('checkUserStatus exception'.$e->getMessage());
        }
    }
    public function Loginout(){
        session('user_id',null);
        session_destroy();
    }
    public function RemoveCookie(){
        cookie('user_id',null);
        cookie('tel',null);
        cookie('pwd',null);
    }
    public function selectOldPasswod($telphone,$oldpassword){
      $res=  Db::name('cuser')->where(array('telphone'=>$telphone,'password'=>md5($oldpassword)))
        ->find();
      if($res){
          return 1;
      }else{
          return 0;
      }
    }
    //查询账号是否存在
    public function selectAccount($telphone){
      $res=  Db::name('cuser')->field('id')
        ->where('telphone',$telphone)
        ->find();
      //dump($res);
      if(!empty($res)){
          return 1;
      }else{
          return 0;
      }
    }
    //删除账号
    
}